<template>
  <div>
    <h1>查看Vue的过渡动画效果</h1>
    <button @click="isShow = !isShow">控制显示隐藏</button>
    <!-- 
      当插入或删除包含在 transition 组件中的元素时，Vue 将会做以下处理：

    自动嗅探目标元素是否应用了 CSS 过渡或动画，如果是，在恰当的时机添加/删除 CSS 类名。

    如果过渡组件提供了 JavaScript 钩子函数，这些钩子函数将在恰当的时机被调用。

    如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画，DOM 操作 (插入/删除) 在下一帧中立即执行。(注意：此指浏览器逐帧动画机制，和 Vue 的 nextTick 概念不同)
     -->
    <transition class="box ">
      <div v-show="isShow">
        <div class="active">
          <p>动画显示部分</p>
        </div>
      </div>
    </transition>
  </div>
</template>

<script>
export default {
  name: "Box",
  data() {
    return {
      isShow: false,
    };
  },
};
</script>

<style>
/* 
  以下类名,只要书写了,就会和transition标签直接关联:
  
  v-enter是控制动画进入之前的样式状态
  v-leave-to:是控制动画离开的最终位置的样式状态

  .v-enter-active:控制元素在进入时动画效果如何呈现
  .v-leave-active:控制元素在离去时动画效果如何呈现 */


.box {
  width: 100px;
  height: 50px;
  background-color: blueviolet;
  text-align: center;
  line-height: 50px;
}
.active {
  width: 100px;
  height: 50px;
  background: blueviolet;
  text-align: center;
  line-height: 50px;
}

.v-enter,
.v-leave-to {
  opacity: 0;
  transform: translateY(200px) skewX(160deg) ;
}

.v-enter-active,
.v-leave-active {
  transition: all 1s linear;
}


</style>